#pragma once

#include "gui.h"

// Ulist 类，继承自 UI_Object，表示一个列表
class Ulist : public UI_Object
{
public:
  // 定义点击事件回调函数的类型
  typedef void (*on_click_cb_t)(lv_event_t* e);

  // 构造函数，初始化列表
  Ulist(UI_Object* lv_obj_get_parent);

  // 析构函数，释放资源
  ~Ulist();

  // 添加一个带图标和文本的按钮到列表中
  void add_btn(const void* icon, const char* txt);

  // 添加一个纯文本项到列表中
  void add_text(const char* txt);

  // 设置列表项的点击事件回调函数
  void on_click(on_click_cb_t cb);

  // 设置列表的尺寸
  void set_size(lv_coord_t width, lv_coord_t height);

private:
  UI_Object* parent = NULL;  // 父对象指针
  on_click_cb_t on_click_cb = NULL;  // 点击事件回调函数指针
  lv_coord_t width = THEME_PAGE_WIDTH;  // 列表的宽度，默认为主题定义的页面宽度
  lv_coord_t height = THEME_PAGE_HEIGHT;  // 列表的高度，默认为主题定义的页面高度
};